//#include<stdio.h>
//#include<stdlib.h>
//#include<unistd.h>
//#include<string.h>
//
//
//int main()
//{
//    printf("我是一个进程：%d\n", getpid());
//    //chdir("/home/yyh");
//    //FILE* pf = fopen("log.txt", "w");
//    FILE* pf = fopen("log.txt", "r");
//    if(pf == NULL)
//    {
//        perror("fopen");
//        exit(1);
//    }
//    while(1)
//    {
//        char buff[1024];
//        buff[0] = 0;
//        size_t ret = fread(buff, 1, sizeof(buff) - 1, pf);
//        if(ret > 0)
//        {
//            buff[ret] = 0;
//            printf("%s\n", buff);
//        }
//        else if(feof(pf))
//        {
//            break;
//        }
//    }
//    //const char* str = "hello world\n";
//    //fwrite(str, strlen(str), 1, pf);
//    //while(1)
//    //{
//    //    sleep(1);
//    //}
//    fclose(pf);
//
//    return 0;
//}


//#include<stdio.h>
//#include<string.h>
//
//
//int main()
//{
//    const char* str1 = "hello printf\n";
//    const char* str2 = "hello fprintf\n";
//    const char* str3 = "hello fputs\n";
//    const char* str4 = "hello fwrite\n";
//    printf(str1);
//    fprintf(stdout, str2);
//    fputs(str3, stdout);
//    fwrite(str4, strlen(str4), 1, stdout);
//
//    return 0;
//}


//#include<stdio.h>
//
//
//#define VERSION1 1
//#define VERSION2 2
//#define VERSION3 4
//#define VERSION4 8
//#define VERSION5 16
//
//void ShowVersion(int flags)
//{
//    if(flags & VERSION1)
//    {
//        printf("version1\n");
//    }
//    if(flags & VERSION2)
//    {
//        printf("version2\n");
//    }
//    if(flags & VERSION3)
//    {
//        printf("version3\n");
//    }
//    if(flags & VERSION4)
//    {
//        printf("version4\n");
//    }
//    if(flags & VERSION5)
//    {
//        printf("version5\n");
//    }
//}
//
//int main()
//{
//    ShowVersion(VERSION1);
//    printf("---------------\n");
//    ShowVersion(VERSION1 | VERSION2);
//    printf("---------------\n");
//    ShowVersion(VERSION1 | VERSION2 | VERSION3);
//    printf("---------------\n");
//    ShowVersion(VERSION1 | VERSION2 | VERSION3 | VERSION4);
//    printf("---------------\n");
//    ShowVersion(VERSION1 | VERSION2 | VERSION3 | VERSION4 | VERSION5);
//    printf("---------------\n");
//
//    return 0;
//}


//#include<stdio.h>
//#include<sys/types.h>
//#include<sys/stat.h>
//#include<fcntl.h>
//#include<unistd.h>
//#include<string.h>
//
//
//int main()
//{
//    umask(0);
//    int fd1 = open("log1.txt", O_WRONLY | O_CREAT | O_APPEND, 0666);
//    int fd2 = open("log2.txt", O_WRONLY | O_CREAT | O_APPEND, 0666);
//    int fd3 = open("log3.txt", O_WRONLY | O_CREAT | O_APPEND, 0666);
//    int fd4 = open("log4.txt", O_WRONLY | O_CREAT | O_APPEND, 0666);
//    //if(fd < 0)
//    //{
//    //    perror("open");
//    //    return 1;
//    //}
//    printf("stdin: %d\n", stdin->_fileno);
//    printf("stdout: %d\n", stdout->_fileno);
//    printf("stderr: %d\n", stderr->_fileno);
//    printf("fd1: %d\n", fd1);
//    printf("fd2: %d\n", fd2);
//    printf("fd3: %d\n", fd3);
//    printf("fd4: %d\n", fd4);
//    //const char* str = "hello world\n";
//    //write(fd, str, strlen(str));
//    close(fd1);
//    close(fd2);
//    close(fd3);
//    close(fd4);
//
//    return 0;
//}


//#include<stdio.h>
//#include<sys/types.h>
//#include<sys/stat.h>
//#include<fcntl.h>
//#include<unistd.h>
//
//
//int main()
//{
//    close(1);
//    int fd = open("log.txt", O_CREAT | O_WRONLY | O_TRUNC, 0666);
//    if(fd < 0)
//    {
//        perror("open");
//        return 1;
//    }
//    printf("hello world, fd: %d\n", fd);
//    fflush(stdout);
//    close(fd);
//
//    return 0;
//}


//#include<stdio.h>
//#include<sys/types.h>
//#include<sys/stat.h>
//#include<fcntl.h>
//#include<unistd.h>
//#include<string.h>
//
//
//int main()
//{
//    int fd = open("log.txt", O_CREAT | O_WRONLY | O_APPEND, 0666);
//    if(fd < 0)
//    {
//        perror("open");
//        return 1;
//    }
//    dup2(fd, 1);
//    printf("fd: %d\n", fd);
//    const char* str = "hello linux\n";
//    write(fd, str, strlen(str));
//    printf("hello world\n");
//
//    return 0;
//}


//#include<stdio.h>
//#include<unistd.h>
//
//
//int main()
//{
//    pid_t pid = fork();
//    if(pid == 0)
//    {
//        close(1);
//        while(1)
//        {
//            sleep(1);
//        }
//    }
//    while(1)
//    {
//        printf("hello world\n");
//        sleep(1);
//    }
//
//    return 0;
//}


#include<stdio.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<unistd.h>


int main()
{
    int fd = open("log.txt", O_CREAT | O_TRUNC | O_WRONLY, 0666);
    if(fd < 0)
    {
        perror("open");
        return 1;
    }
    dup2(fd, 1);
    execl("/usr/bin/ls", "ls", "-l", NULL);

    return 0;
}





